草庐IT

LeetCode - 两数之和

全部标签

Leetcode 977-有序数组的平方 | LeetCode209-长度最小的子数组 | Leetcode59-螺旋矩阵

Leetcode977-有序数组的平方|LeetCode209-长度最小的子数组|Leetcode59-螺旋矩阵Leetcode977-有序数组的平方给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100],排序后,数组变为[0,1,9,16,100]示例2:输入:nums=[-7,-3,2,3,11]输出:[4,9,9,49,121]方法一-双指针法classSolution{public:vectorint>so

# - LeetCode 704-二分查找 |LeetCode 27-移除元素

## LeetCode704-二分查找-题目描述:给定一个n个元素有序的(升序)整型数组nums和一个目标值target,-写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。给定一个n个元素有序的(升序)整型数组nums和一个目标值target ,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。-题目链接:leetcode.cn/problems/bi…-解题思路: 用二分法。从中间开始查找,根据target值的大小改变left和right的值-二分法使用条件:1.查找的是有序的数组2.没有重复的元素方法1: 左闭右闭区间[left,r

Day4|LeetCode 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、160.链表相交、142.环形链表

LeetCode 24.两两交换链表中的节点题目链接:24.两两交换链表中的节点-力扣(LeetCode)视频链接:帮你把链表细节学清楚!|LeetCode:24.两两交换链表中的节点_哔哩哔哩_bilibili思路给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。这种题建议画图,不然的话很多指针容易乱,最好用虚拟头结点的方式,这样就不用再进行单独处理。很多人这种题的过程容易写错,就像这道题,正确的过程如下图所示:先让cur指向虚拟头节点,然后进行以下操作 代码实现:classSolution{public:ListNode

代码随想录算法训练营第7天|【哈希表02】454.四数相加II ,383. 赎金信 ,15. 三数之和 , 18. 四数之和

今日任务:454.四数相加II,383.赎金信,15.三数之和,18.四数之和+总结状态:1刷文章目录一、454.四数相加II二、383.赎金信三、15.三数之和四、18.四数之和总结一、454.四数相加II题目:给定四个包含整数的数组列表A,B,C,D,计算有多少个元组(i,j,k,l),使得A[i]+B[j]+C[k]+D[l]=0。思路:ThisisaC++implementationfortheproblemwhereweneedtocountthenumberofi,j,k,lsuchthatA[i]+B[j]+C[k]+D[l]equalstozero.Thesolutionuse

算法leetcode|63. 不同路径 II(rust重拳出击)

文章目录63.不同路径II:样例1:样例2:提示:分析:题解:rust:go:c++:python:java:63.不同路径II:一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用1和0来表示。样例1:输入: obstacleGrid=[[0,0,0],[0,1,0],[0,0,0]] 输出: 2 解释: 3x3网格的正中间有一个障碍物。 从左上角到右下角一共有2条不同的路

day7 代码训练营 主要是哈希表和双指针法和几数之和问题

第一题四数之和一开始还是只能想到说是四重循环但是我估计肯定不行另外这个题的主要思想就是用两个循环去解决4个循环的暴力解法 我一上来想的是去用四个multimap去存储ABCD但那样是不行的因为:使用四个multimap存储A、B、C和D的元素,然后进行四个循环,其实就是一种暴力解法。对于每一个a、b、c和d的组合,你都需要检查它们的和是否为0。这种方法的时间复杂度是O(n⁴),因为你需要遍历A、B、C和D中的所有元素四元组。虽然multimap可以按照键(key)进行排序并快速查找特定的键,但这并不能改变你需要遍历所有四元组的事实。只有当你需要查找或删除特定键的元素时,multimap的特性才

LeetCode-Day2-977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,

977.有序数组的平方:双指针法,原来数组是有序的,说明平房之后最左和最右两边的平方和是最大的,比较最大的插入新的vector数组,然后移动指针选下一个元素进行比较。classSolution{public:vectorsortedSquares(vector&nums){intleft=0;intright=nums.size()-1;intk=right;vectorres(nums.size(),0);while(left209:长度最小的子数组接下来就开始介绍数组操作中另一个重要的方法:滑动窗口。所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。在暴力解法

LeetCode977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

LeetCode977.有序数组的平方思路:    双指针应用    因为数组是有序的,数组中可能存在负数,所以其平方的最大值只可能是数组的头或尾,因此可以定义两个指针,i指向头,j指向尾。同时定义一个新数组result,让k指向新数组的最后一个元素,当nums[i]*nums[i]>=nums[j]*nums[j],result[k]=nums[i]*nums[i],k--,i++;nums[i]*nums[i]代码:classSolution{public:vectorsortedSquares(vector&nums){vectorresult(nums.size(),0);intk=n

LeetCode977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

LeetCode977.有序数组的平方思路:    双指针应用    因为数组是有序的,数组中可能存在负数,所以其平方的最大值只可能是数组的头或尾,因此可以定义两个指针,i指向头,j指向尾。同时定义一个新数组result,让k指向新数组的最后一个元素,当nums[i]*nums[i]>=nums[j]*nums[j],result[k]=nums[i]*nums[i],k--,i++;nums[i]*nums[i]代码:classSolution{public:vectorsortedSquares(vector&nums){vectorresult(nums.size(),0);intk=n

2022.02.15_每日一题 leetcode.690

题目描述690.员工的重要性给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度和直系下属的id。比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15,10,5。那么员工1的数据结构是[1,15,[2]],员工2的数据结构是[2,10,[3]],员工3的数据结构是[3,5,[]]。注意虽然员工3也是员工1的一个下属,但是由于并不是直系下属,因此没有体现在员工1的数据结构中。现在输入一个公司的所有员工信息,以及单个员工id,返回这个员工和他所有下属的重要度之和。示例:输入:[[1,5,[2,3]],[2,3,[]],[3,3,[]]],1输出:11解释:员工1自身的